Advances in computer technology (e.g., microprocessor speed, memory capacity, data transfer bandwidth, software functionality, and the like) have generally contributed to increased computer application in various industries. Ever more powerful server systems, which are often configured as an array of servers, are commonly provided to service requests originating from external sources such as the World Wide Web, for example.
As the amount of available electronic data grows, it becomes more important to store such data in a manageable manner that enables user friendly and quick data searches and retrievals. Today, a common approach is to store electronic data in one or more databases. In general, a typical database can be referred to as an organized collection of information with data structured such that a computer program can quickly search and select desired pieces of data, for example. Commonly, data within a database is organized via one or more tables. Such tables are arranged as an array of rows and columns.
Also, the tables can comprise a set of records, wherein a record includes a set of fields. Records are commonly indexed as rows within a table and the record fields are typically indexed as columns, such that a row/column pair of indices can reference particular datum within a table. For example, a row can store a complete data record relating to a sales transaction, a person, or a project. Likewise, columns of the table can define discrete portions of the rows that have the same general data format, wherein the columns can define fields of the records.
Each individual piece of data, standing alone, is generally not very informative. Database applications make data more useful because they help users organize and process the data. Database applications allow the user to compare, sort, order, merge, separate and interconnect the data, so that useful information can be generated from the data. Capacity and versatility of databases have grown incredibly to allow virtually endless storage capacity utilizing databases.
As greater amounts of information are being stored electronically, a more pressing need to protect this electronic information is yielded. To safeguard electronic information, data is oftentimes copied to create a second version, or backup, of an original source. The data typically copied during a backup can be stored program code, data associated with a program, or a combination thereof. The backup can be stored on a hard disk, large capacity magnetic tape storage, optical disk media (e.g., CD-R, DVD-R, . . . ), or any type of storage media.
The backup can be utilized to restore data, for example, in the case of damage or loss of a hard disk, corruption of data, etc. Oftentimes, however, a backup does not include all changes (e.g., updating, creating, deleting, moving, . . . ) that have been made to the data prior to media failure and after the backup was taken; thus, the restored data differs from the pre-failure version of the data. Returning the data to the pre-failure version by repeating the changes made subsequent to the backup can be costly in terms of a user's time and effort, system resources, etc. and/or may not feasibly be accomplished (e.g., not possible to recreate a digital photograph of a prior event if the data was not backed up). According to another example, a backup can be restored to revert back to a previous version of data associated with the original source from a current version of the data that has been corrupted, undesirably altered, etc. According to this example, conventional techniques can inappropriately return the data to the pre-restore version if the data is synchronized with a disparate replica of the data. Thus, a number of problems and difficulties are associated with currently employed techniques to restore data via utilizing a backup.